MUI_CreateCustomClass() returns a pointer to a struct MUI_CustomClass which in turn contains a pointer to a struct IClass. For private classes, this struct IClass pointer needs to be fed to a intuition.library/NewObject() call to create new objects.
MUI creates the dispatcher hook for you, you may not use the IClass->cl_Dispatcher.h_Data field! If you need custom data for your dispatcher, use the cl_UserData of the IClass structure or the mcc_UserData of the MUI_CustomClass structure.
For public classes, MUI makes sure that a6 contains a pointer to your library base when your dispatcher is called. For private classes, you will need to keep track of A4 of similiar things your compiler may need yourself.